package cn.how2j.basics.series.reflect;

import cn.how2j.basics.charactor.Hero;

/**
 * Created by SilentJhin on 2020/8/23 13:44
 */
public class TestReflection {
    public static void main(String[] args) throws ClassNotFoundException {
        /**
         * 获取类对象三种方式
         * Class.forName
         * 类名.class
         * 引用.getClass()
         * 无论什么途径获取类对象，都会导致静态属性被初始化，而且只会执行一次。
         * （除了直接使用 Class c = Hero.class 这种方式，这种方式不会导致静态属性被初始化）
         * 当synchronized修饰静态方法的时候， 同步对象就是这个类的类对象。
         *
         * 反射使用在Spring 的依赖注入，反转控制上面
         */
        String className = "cn.how2j.basics.charactor.Hero";
        Class class1 = Class.forName(className);
        Class class2 = Hero.class;
        Class class3 = new Hero().getClass();
        //System.out.println(class1==class2);
        //System.out.println(class1==class3);
    }
}
